JDK7 introduced the class java.nio.charset.StandardCharsets
. It provides constants for all charsets that are guaranteed to be
available on every implementation of the Java platform.
- ISO_8859_1
- US_ASCII
- UTF_16
- UTF_16BE
- UTF_16LE
- UTF_8
These constants should be preferred to:
- the use of a String such as "UTF-8" which has the drawback of requiring the
catch
/throw
of an
UnsupportedEncodingException
that will never actually happen
- the use of Guava’s
Charsets
class, which has been obsolete since JDK7
Noncompliant code example
try {
byte[] bytes = string.getBytes("UTF-8"); // Noncompliant; use a String instead of StandardCharsets.UTF_8
} catch (UnsupportedEncodingException e) {
throw new AssertionError(e);
}
// ...
byte[] bytes = string.getBytes(Charsets.UTF_8); // Noncompliant; Guava way obsolete since JDK7
Compliant solution
byte[] bytes = string.getBytes(StandardCharsets.UTF_8)